perm filename MACRO.LSP[E80,JMC]1 blob sn#529012 filedate 1980-08-04 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	 for testing macro facilities also defines if macro
C00004 ENDMK
CāŠ—;
;;; for testing macro facilities; also defines if macro

(defun if macro (l)(cons 'cond (ifxxx1 (cdr l))))

(defun ifxxx1 (u) (cond ((null (cdr u)) (list (list t (car u))))
(t (cons (list (car u) (cadr u)) (ifxxx1 (cddr u))))))
	
;;; macdef as described in 1980 version McC and Talcott

(DEFUN MACDEF MACRO (L)
  (LIST 'DEFUN 
	(CAADR L)
	'MACRO 
	'(%L) 
	(LIST 'SUBLIS 
	      (LIST 'PRUP (LIST 'QUOTE (CDADR L)) (LIST 'CDR '%L) )
	      (LIST 'QUOTE (CADDR L))) ))

(DEFUN PRUP (U V) (IF (NULL U) NIL (CONS (CONS (CAR U) (CAR V)) (PRUP
(CDR U) (CDR V)))))

(macrodef iff (p a b) (cond (p a) (t b)))

(defun alt (u) (iff
	(or (null u) (null (cdr u)))
	u
	(cons (car u) (alt (cddr u)))
))